﻿using System;
using System.Runtime.InteropServices;

namespace Vtron.ATSP.Projector.Domain
{
    /// <summary>
    /// 消息头抽象类
    /// </summary>
    /// <remarks>
    ///     <创建人>邓穗捷</创建人>
    ///     <创建时间>2014-08-21</创建时间>
    ///     <修订人></修订人>
    ///     <修订时间></修订时间>
    ///     <修订说明></修订说明>
    /// </remarks>
    [Serializable]
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public abstract class MessageHead
    {
        /// <summary>
        /// 会话ID
        /// </summary>
        /// <remarks>
        /// 会话ID用来标志一个会话的ID，由VWAS来产生和维护唯一性，这个通常在一个命令需要响应ack或有两次或两次以上的交互时有用。
        /// 会话ID只使用最低8bit，以便和信号板串口协议中的8bit会话ID同步。
        /// </remarks>
        public uint SessionId { get; set; }

        /// <summary>
        /// 消息ID
        /// </summary>
        /// <remarks>
        /// 消息ID是区分消息的类别。
        /// </remarks>
        public ushort MessageId { get; set; }

        /// <summary>
        /// 数据长度
        /// </summary>
        /// <remarks>
        /// 数据长度是指消息数据的长度。
        /// </remarks>
        public uint DataLenght { get; set; }

    }
}
